﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using SGAEntidades;
using SGABDUtil;
using SGAInterfaces;

namespace SGAAccesoDatos
{
    public class OperadorPlanTelefonia : IOperadorPlanTelefonia
    {
        #region Miembros de IOperadorPlanTelefonia

        public IList<OperadorPlanTelefoniaInfo> Listar(OperadorPlanTelefoniaInfo oPlanTelefonia)
        {
            var sqlParm = new SqlParameter[7];
            var oListaOperadorPlan = new List<OperadorPlanTelefoniaInfo>();

            sqlParm[0] = new SqlParameter("@Id_Plan_Telefonia", SqlDbType.VarChar);
            if (oPlanTelefonia.IdPlanTelefonia != null) { sqlParm[0].Value = oPlanTelefonia.IdPlanTelefonia; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Id_Operador", SqlDbType.VarChar);
            if (oPlanTelefonia.IdOperador != null) { sqlParm[1].Value = oPlanTelefonia.IdOperador; } else { sqlParm[1].Value = DBNull.Value; }

            sqlParm[2] = new SqlParameter("@Descripcion", SqlDbType.VarChar);
            if (oPlanTelefonia.Descripcion != null) { sqlParm[2].Value = oPlanTelefonia.Descripcion; } else { sqlParm[2].Value = DBNull.Value; }

            sqlParm[3] = new SqlParameter("@Flag_Red_Privada_Movil", SqlDbType.VarChar);
            if (oPlanTelefonia.RedPrivadaMovil != null) { sqlParm[3].Value = oPlanTelefonia.RedPrivadaMovil; } else { sqlParm[3].Value = DBNull.Value; }

            sqlParm[4] = new SqlParameter("@Flag_Linea_Abierta", SqlDbType.VarChar);
            if (oPlanTelefonia.LineaAbierta != null) { sqlParm[4].Value = oPlanTelefonia.LineaAbierta; } else { sqlParm[4].Value = DBNull.Value; }

            sqlParm[5] = new SqlParameter("@Flag_SMS", SqlDbType.VarChar);
            if (oPlanTelefonia.Sms != null) { sqlParm[5].Value = oPlanTelefonia.Sms; } else { sqlParm[5].Value = DBNull.Value; }

            sqlParm[6] = new SqlParameter("@Flag_Internet", SqlDbType.VarChar);
            if (oPlanTelefonia.Internet != null) { sqlParm[6].Value = oPlanTelefonia.Internet; } else { sqlParm[6].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                                  CommandType.StoredProcedure, "SGA_SP_CONSULTAR_OPERADOR_PLAN_TELEFONIA", sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        while (drd.Read())
                        {
                            oListaOperadorPlan.Add(new OperadorPlanTelefoniaInfo(drd.GetString(0).Trim(), drd.GetString(1).Trim(),
                                new OperadorTelefoniaInfo(drd.GetString(1).Trim(), drd.GetString(2).Trim()), drd.GetString(3).Trim(), drd.GetString(4).Trim(),
                                Int32.Parse(drd.GetValue(5).ToString()), drd.GetString(6).Trim(), Int32.Parse(drd.GetValue(7).ToString()), drd.GetString(8).Trim(),
                                Int32.Parse(drd.GetValue(9).ToString()), drd.GetString(10).Trim(), Int32.Parse(drd.GetValue(11).ToString()), null));
                        }
                    }
                }
            }
            return oListaOperadorPlan;
        }

        public OperadorPlanTelefoniaInfo Consultar(OperadorPlanTelefoniaInfo oPlanTelefonia)
        {
            var sqlParm = new SqlParameter[7];
            var oEntOperadorPlan = new OperadorPlanTelefoniaInfo();

            sqlParm[0] = new SqlParameter("@Id_Plan_Telefonia", SqlDbType.VarChar);
            if (oPlanTelefonia.IdPlanTelefonia != null) { sqlParm[0].Value = oPlanTelefonia.IdPlanTelefonia; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Id_Operador", SqlDbType.VarChar);
            if (oPlanTelefonia.IdOperador != null) { sqlParm[1].Value = oPlanTelefonia.IdOperador; } else { sqlParm[1].Value = DBNull.Value; }

            sqlParm[2] = new SqlParameter("@Descripcion", SqlDbType.VarChar);
            if (oPlanTelefonia.Descripcion != null) { sqlParm[2].Value = oPlanTelefonia.Descripcion; } else { sqlParm[2].Value = DBNull.Value; }

            sqlParm[3] = new SqlParameter("@Flag_Red_Privada_Movil", SqlDbType.VarChar);
            if (oPlanTelefonia.RedPrivadaMovil != null) { sqlParm[3].Value = oPlanTelefonia.RedPrivadaMovil; } else { sqlParm[3].Value = DBNull.Value; }

            sqlParm[4] = new SqlParameter("@Flag_Linea_Abierta", SqlDbType.VarChar);
            if (oPlanTelefonia.LineaAbierta != null) { sqlParm[4].Value = oPlanTelefonia.LineaAbierta; } else { sqlParm[4].Value = DBNull.Value; }

            sqlParm[5] = new SqlParameter("@Flag_SMS", SqlDbType.VarChar);
            if (oPlanTelefonia.Sms != null) { sqlParm[5].Value = oPlanTelefonia.Sms; } else { sqlParm[5].Value = DBNull.Value; }

            sqlParm[6] = new SqlParameter("@Flag_Internet", SqlDbType.VarChar);
            if (oPlanTelefonia.Internet != null) { sqlParm[6].Value = oPlanTelefonia.Internet; } else { sqlParm[6].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                                  CommandType.StoredProcedure, "SGA_SP_CONSULTAR_OPERADOR_PLAN_TELEFONIA", sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        drd.Read();
                        oEntOperadorPlan = new OperadorPlanTelefoniaInfo(drd.GetString(0).Trim(), drd.GetString(1).Trim(),
                            new OperadorTelefoniaInfo(drd.GetString(1).Trim(), drd.GetString(2).Trim()), drd.GetString(3).Trim(), drd.GetString(4).Trim(),
                            Int32.Parse(drd.GetValue(5).ToString()), drd.GetString(6).Trim(), Int32.Parse(drd.GetValue(7).ToString()), drd.GetString(8).Trim(),
                            Int32.Parse(drd.GetValue(9).ToString()), drd.GetString(10).Trim(), Int32.Parse(drd.GetValue(11).ToString()), null);
                    }
                }
            }
            return oEntOperadorPlan;
        }

        #endregion
    }
}
